/* 
 * File:   buffer_cache.h
 * Author: Tomás R. González Barroso  
 * Diseño de sistemas Operativos
 * Created on 26 de junio de 2013, 8:46
 */

#include "comun.h"
#include "buffer.h"

// buffer-cache header
typedef struct buffcachheader {
    int fl_start;                  // free list start node
    int fl_end;                    // free list end node
    int hash[MAXHASH];             // hash lists vector
    int sleep[MAXSLEEP];           // sleep processes vector
} buffcachheader;

typedef struct buffcach {
    buffcachheader header;          // buffer-cache header
    buffer buffers[MAXBUFF];        // buffers vector
} buffcach;


//Inicializamos buffer y alojamos en memoria compartida
void bc_init(int getmemory,int ite);

//Obtenemos un buffer de la lista libre
buffer * bc_getfree( buffer *buffsol );

//Añadimos el buffer indicado a la lista libres
void bc_setfree( buffer *buff);

//Eliminamos de la lista hash el buffer indicado
void bc_drophash(buffer * buff_aux);

//Añadimos al comienzo de la hash el buffer indicado
void bc_pushhash(buffer * buff_aux);





